package txt1;

public class ExceptionDome {
    public static void main(String[] args) {
//        ClassLoader.getSystemClassLoader().loadClass("");

        autoClose();
        handleClose();
    }

    private static void autoClose(){
        try(
               MyException myException =  new MyException();
        ){
            System.out.println("做了逻辑处理");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * try：自动调用try当中的代码、
     *      声明到try()中的对象必须是Closable接口的实例
     */

    private static void handleClose(){
        MyException myException = null;
        try{
                myException = new MyException();
            System.out.println("做我们的逻辑操作");
        } catch (Exception e) {
        }
        /**
         * finally:不管try当中代码是否出现异常，最终都会被执行
         *
         * 可以利用finally做一些收尾的工作
         * 关闭流，释放内存等，关闭连接
         * 提交事务或回滚事务
         */
        finally {
            /**
             * 避免空指针异常的出现，在调用close的时候最好判断你所判断的值是否初始化
             */
            if (myException != null){
                try {
                    //手动调用close方法
                    myException.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
